/*
 * @Author       : Hejh(3010733382@qq.com)
 * @Version      : V1.0
 * @Date         : 2024-01-29 12:45:45
 * @Description  : 文件资源相关的类型
 */

import type { UserCommonRes, FileCommonRes } from './commom'

// 普通文件列表查询
export interface SourceReq {
  page?: number
  pageSize?: number
  type?: number
  isDir?: number
  deleteFlag?: number
  filename?: string
  parentId: string
}

export interface LinkSourceReq extends SourceReq {
  code?: string
  shareId: string
}

// 根据文件类型列表查询
export interface FileTypeSourceReq {
  page?: number
  pageSize?: number
  filename?: string
  fileType: string
}

// 回收站文件列表查询
export interface BinSourcePageReq {
  page?: number
  pageSize?: number
  filename?: string
}

// source返回实体
export interface SourceRes {
  id: string
  binSourceId: string
  shareId: string
  Share: any
  filename: string
  parentId: string
  targetType: number
  targetId: string
  parentLevel: string
  sizeDesc: string
  desc: string
  isDir: number
  type: number
  deleteFlag: number
  createTime: string
  updateTime: string
  createUser: string
  updateUser: string
  viewTime: string
  hasFile: number
  hasFolder: number
  file: FileCommonRes
  user: UserCommonRes
  isLeaf: boolean
  isEdit: boolean
  createType: 'rename' | 'createDir' | 'createFile'
  pathInfo: {
    id: string
    filename: string
  }[]
}

// 分页source返回实体
export interface SourcePageRes {
  total: number
  pageSize: number
  pages: number
  page: number
  items: SourceRes[]
  curSource: SourceRes
}

// 文件资源授权对象实体
export interface SourceAuthReq {
  sourceId: string
  authTo: {
    targetType: string
    targetId: string
    roleId: string
  }[]
}

// 创建文件夹请求类型
export interface CreateDirReq {
  dirName: string
  parentId: string
}

// 创建文件请求类型
export interface CreateFileReq {
  filename: string
  parentId: string
  type: number
}

// 更新文件夹请求类型
export interface RenameDirReq {
  filename: string
  sourceId: string
}

// 移动或者复制文件请求类型
export interface MoveSourceReq {
  sourceIds: string[]
  parentId: string
}

// 文件放入回收站类型
export interface BinSourceReq {
  sourceIds: string[]
}

// 删除文件
export interface DelSourceReq {
  binSourceIds: string[]
  isAll: number
}

// 查询文件日志
export interface SourceLogReq {
  page?: number
  pageSize?: number
  sourceId: string
}

// // 文件授权
// export interface SourceAuthReq {
//   sourceId: string
//   authTo: {
//     targetType: number
//     targetId: string
//     roleId: string
//   }[]
// }

// =============================== 文件store中相关类型 ====================================================
export interface SourceNav {
  [key: string]: any
}

// =============================== 文件资源管理页面渲染所需要类型============================================
export type SourceRowData = SourceRes
